package com.gqj.elec.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.gqj.common.annotation.Excel;
import com.gqj.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 物资出库详情对象 elec_material_outDetail
 *
 * @author lxq
 * @date 2023-12-17
 */
public class ElecMaterialOutdetail extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Long outdetailId;

    /**
     * 物资编码
     */
    @Excel(name = "物资编码")
    @ApiModelProperty("物资编码")
    private String materialCode;

    /**
     * 物资名称
     */
    @Excel(name = "物资名称")
    @ApiModelProperty("物资名称")
    private String materialName;

    /**
     * 是否出库 1-已出库 0-未出库
     */
    //@Excel(name = "是否出库", dictType = "is_out")
    @ApiModelProperty("是否出库 1-已出库 0-未出库")
    private String isOut;


    /**
     * 领用人
     */
    @Excel(name = "领用人")
    private String createBy;

    /**
     * 出库日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "领用日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("领用日期")
    private Date outDate;

    /**
     * 库房
     */
    @Excel(name = "库房")
    @ApiModelProperty("库房")
    private String warehouseName;

    /**
     * 分类
     */
    @Excel(name = "分类")
    @ApiModelProperty("分类")
    private String sortName;

    /**
     * 柜架
     */
    @Excel(name = "柜架")
    @ApiModelProperty("柜架")
    private String cabinetName;


    /**
     * 层位
     */
    @Excel(name = "层位")
    @ApiModelProperty("层位")
    private String gridName;

    /**
     * 供应商
     */
    @Excel(name = "供应商")
    @ApiModelProperty("供应商")
    private String providerName;

    /**
     * 出库ID
     */
    @ApiModelProperty("出库ID")
    private Long outId;

    /**
     * 物资ID
     */
    @ApiModelProperty("物资ID")
    private Long materialId;

    /**
     * 出库重量
     */
    private BigDecimal outWeight;


    private String outDateStr;
    /**
     * 是否归还 1-已归还 0-未归还
     */
    @ApiModelProperty("是否归还 1-已归还 0-未归还")
    private String isReturn;

    /**
     * 归还日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("归还日期")
    private Date returnDate;


    /**
     * 规格型号
     */
    @ApiModelProperty("规格型号")
    private String specifications;

    /**
     * 分类ID
     */
    private Long sortId;


    /**
     * 库房ID
     */
    private Long warehouseId;


    /**
     * 柜架ID
     */
    private Long cabinetId;


    /**
     * 层位ID
     */
    private Long gridId;


    /**
     * 单位ID
     */
    private Long unitId;

    /**
     * 单位
     */
    @ApiModelProperty("单位")
    private String unitName;

    /**
     * 供应商ID
     */
    private Long providerId;

    /**
     * 物资类别
     */
    private String materialCategory;

    /**
     * 采购日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("采购日期")
    private Date purchaseDate;

    /**
     * 备件类型 1-RFID 2-称重
     */
    private String sparePartType;

    private Integer outNumber;

    /**
     * 物资状态 1-在库可领用 0-出库待归还
     */
    @ApiModelProperty("")
    private String materialStatus;

    private List<ElecMaterialOutdetail> elecMaterialOutdetailList;

    public List<ElecMaterialOutdetail> getElecMaterialOutdetailList() {
        return elecMaterialOutdetailList;
    }

    public void setElecMaterialOutdetailList(List<ElecMaterialOutdetail> elecMaterialOutdetailList) {
        this.elecMaterialOutdetailList = elecMaterialOutdetailList;
    }

    public String getMaterialStatus() {
        return materialStatus;
    }

    public void setMaterialStatus(String materialStatus) {
        this.materialStatus = materialStatus;
    }

    public String getOutDateStr() {
        return outDateStr;
    }

    public void setOutDateStr(String outDateStr) {
        this.outDateStr = outDateStr;
    }

    @Override
    public String getCreateBy() {
        return createBy;
    }

    @Override
    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public Integer getOutNumber() {
        return outNumber;
    }

    public void setOutNumber(Integer outNumber) {
        this.outNumber = outNumber;
    }

    public String getSparePartType() {
        return sparePartType;
    }

    public void setSparePartType(String sparePartType) {
        this.sparePartType = sparePartType;
    }

    public void setOutdetailId(Long outdetailId) {
        this.outdetailId = outdetailId;
    }

    public Long getOutdetailId() {
        return outdetailId;
    }

    public void setOutId(Long outId) {
        this.outId = outId;
    }

    public Long getOutId() {
        return outId;
    }

    public void setMaterialId(Long materialId) {
        this.materialId = materialId;
    }

    public Long getMaterialId() {
        return materialId;
    }

    public void setOutWeight(BigDecimal outWeight) {
        this.outWeight = outWeight;
    }

    public BigDecimal getOutWeight() {
        return outWeight;
    }

    public String getIsOut() {
        return isOut;
    }

    public void setIsOut(String isOut) {
        this.isOut = isOut;
    }

    public void setOutDate(Date outDate) {
        this.outDate = outDate;
    }

    public Date getOutDate() {
        return outDate;
    }

    public void setIsReturn(String isReturn) {
        this.isReturn = isReturn;
    }

    public String getIsReturn() {
        return isReturn;
    }

    public void setReturnDate(Date returnDate) {
        this.returnDate = returnDate;
    }

    public Date getReturnDate() {
        return returnDate;
    }

    public String getMaterialCode() {
        return materialCode;
    }

    public void setMaterialCode(String materialCode) {
        this.materialCode = materialCode;
    }

    public String getMaterialName() {
        return materialName;
    }

    public void setMaterialName(String materialName) {
        this.materialName = materialName;
    }

    public String getSpecifications() {
        return specifications;
    }

    public void setSpecifications(String specifications) {
        this.specifications = specifications;
    }

    public Long getSortId() {
        return sortId;
    }

    public void setSortId(Long sortId) {
        this.sortId = sortId;
    }

    public String getSortName() {
        return sortName;
    }

    public void setSortName(String sortName) {
        this.sortName = sortName;
    }

    public Long getWarehouseId() {
        return warehouseId;
    }

    public void setWarehouseId(Long warehouseId) {
        this.warehouseId = warehouseId;
    }

    public String getWarehouseName() {
        return warehouseName;
    }

    public void setWarehouseName(String warehouseName) {
        this.warehouseName = warehouseName;
    }

    public Long getCabinetId() {
        return cabinetId;
    }

    public void setCabinetId(Long cabinetId) {
        this.cabinetId = cabinetId;
    }

    public String getCabinetName() {
        return cabinetName;
    }

    public void setCabinetName(String cabinetName) {
        this.cabinetName = cabinetName;
    }

    public Long getGridId() {
        return gridId;
    }

    public void setGridId(Long gridId) {
        this.gridId = gridId;
    }

    public String getGridName() {
        return gridName;
    }

    public void setGridName(String gridName) {
        this.gridName = gridName;
    }

    public Long getUnitId() {
        return unitId;
    }

    public void setUnitId(Long unitId) {
        this.unitId = unitId;
    }

    public String getUnitName() {
        return unitName;
    }

    public void setUnitName(String unitName) {
        this.unitName = unitName;
    }

    public Long getProviderId() {
        return providerId;
    }

    public void setProviderId(Long providerId) {
        this.providerId = providerId;
    }

    public String getProviderName() {
        return providerName;
    }

    public void setProviderName(String providerName) {
        this.providerName = providerName;
    }

    public String getMaterialCategory() {
        return materialCategory;
    }

    public void setMaterialCategory(String materialCategory) {
        this.materialCategory = materialCategory;
    }

    public Date getPurchaseDate() {
        return purchaseDate;
    }

    public void setPurchaseDate(Date purchaseDate) {
        this.purchaseDate = purchaseDate;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("outdetailId", getOutdetailId())
                .append("outId", getOutId())
                .append("materialId", getMaterialId())
                .append("outWeight", getOutWeight())
                .append("outIn", getIsOut())
                .append("outDate", getOutDate())
                .append("isReturn", getIsReturn())
                .append("returnDate", getReturnDate())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
